﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Gustozzi.DAL;
using Gustozzi.BL;
namespace WebGustozzi.ModuloVentas
{
    ///<summary>
    ///Nombre	    : wfActualizarCampaña
    ///Descripción	: 
    ///               
    ///</summary>
    ///<remarks>
    ///Fecha        Moficado Por        Descripción
    ///07/02/2012               	    Versión inicial
    ///21/02/2012   Marco Pizarro	    Agregar validaciones iniciales
    ///23/02/2012   Marco Pizarro	    Verificar validación de fechas
    ///</remarks>
    public partial class wfActualizarCampaña : System.Web.UI.Page
    {
        VentasDataEntities contexto = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) 
            {
                Inicializa();
            }
        }

        public void Inicializa() 
        {

            txtFechaInicio.Attributes.Add("onblur", String.Format("FechaValida('{0}','{1}','{2}')", txtFechaInicio.ClientID, "Campañas", "Ingrese una Fecha de Inicio válido"));
            txtFechaFin.Attributes.Add("onblur", String.Format("FechaValida('{0}','{1}','{2}')", txtFechaFin.ClientID, "Campañas", "Ingrese una Fecha Fin válido"));
            EditarControles(false);
            divControlesManten.Visible = true;
            divRegistrar.Visible = false;
        }

        public void EditarControles(Boolean estado)
        {
            this.txtCodigoCamp.Enabled = estado;
            this.txtNombreCamp.Enabled = estado;
            this.txtDescripcion.Enabled = estado;
            this.txtFechaFin.Enabled = estado;
            this.txtFechaInicio.Enabled = estado;
            this.imbBuscarCamp.Visible = !estado;
            this.imbFecIni.Visible = estado;
            this.imbFecFin.Visible = estado;
        }

        public void LimpiarCampos()
        {
            this.txtCodigoCamp.Text = "";
            this.txtNombreCamp.Text = "";
            this.txtDescripcion.Text = "";
            this.txtFechaFin.Text = "";
            this.txtFechaInicio.Text = "";
        }

        protected void imbNuevo_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                LimpiarCampos();
                GenerarCodigo();
                EditarControles(true);
                divControlesManten.Visible = false;
                divRegistrar.Visible = true;
                divMensaje.Visible = false;
            }

            catch (Exception ex)
            {
                lblMsj.Text = ex.Message;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;
            }
        }
        public void GenerarCodigo() 
        {
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            var lstCodigo = from p in contexto.Campañas
                            select p.codigoCampana ;

            int idCodigo = 1;
            if (lstCodigo.Count() > 0) 
            {
                idCodigo = lstCodigo.Max();
                idCodigo += 1;
            }
            txtCodigoCamp.Text = idCodigo.ToString();
        }

        protected void txtCodigoCamp_TextChanged(object sender, EventArgs e)
        {
            try
            {
                BuscarCamp();
            }
            catch (Exception ex)
            {
                lblMsj.Text = ex.Message;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;
            }
        }
        public void BuscarCamp() 
        {
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            if (txtCodigoCamp.Text.Trim().Equals(string.Empty)) 
            {
                throw new Exception("Genere codigo de campaña");
            }

            int idCamp = Convert.ToInt32(txtCodigoCamp.Text.Trim());
            var lstCamp = from c in contexto.Campañas
                        where c.codigoCampana==idCamp
                        select c;

            if (lstCamp.Count() > 0)
            {
                Campaña oCamp = lstCamp.First();
                txtNombreCamp.Text = oCamp.nombre;
                txtDescripcion.Text = oCamp.descripcion;
                txtFechaInicio.Text = oCamp.fechaInicioVigencia.Value.ToShortDateString();
                txtFechaFin.Text = oCamp.fechaFinalVigencia.Value.ToShortDateString();

            }
            else 
            {
                txtNombreCamp.Text = string.Empty;
                txtDescripcion.Text = string.Empty;
                txtFechaInicio.Text = string.Empty;
                txtFechaFin.Text = string.Empty;
            }

        }

        protected void imbGuardar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Guardar();
            }
            catch (Exception ex)
            {
                lblMsj.Text = ex.Message;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;
            }
        }
        public void Guardar() 
        {
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            if (txtCodigoCamp.Text.Trim().Equals(string.Empty))
            {
                throw new Exception("Ingrese código de campaña");
            }

            if (txtNombreCamp.Text.Trim().Equals(String.Empty))
            {
                throw new Exception("Ingrese el nombre de campaña.");
            }

            if (this.txtDescripcion.Text.Trim().Equals(String.Empty))
            {
                throw new Exception("Ingrese una descripción para la campaña.");
            }

            if (this.txtFechaInicio.Text.Trim().Equals(String.Empty))
            {
                throw new Exception("Ingrese la fecha de inicio para el periodo de vigencia.");
            }

            if (this.txtFechaFin.Text.Trim().Equals(String.Empty))
            {
                throw new Exception("Ingrese la fecha fin para el periodo de vigencia.");
            }

            int idCamp = Convert.ToInt32(txtCodigoCamp.Text.Trim());
            var lstCamp = from c in contexto.Campañas
                          where c.codigoCampana == idCamp
                          select c;
            
            Campaña oCamp = null;

            if (lstCamp.Count() > 0)
            {
                oCamp = lstCamp.First();
            }
            else 
            {
                oCamp = new Campaña();
                contexto.AddToCampañas(oCamp);
                oCamp.codigoCampana = idCamp;
            }

            oCamp.nombre = txtNombreCamp.Text;
            oCamp.descripcion = txtDescripcion.Text;
            oCamp.fechaInicioVigencia = Convert.ToDateTime(txtFechaInicio.Text);
            oCamp.fechaFinalVigencia= Convert.ToDateTime(txtFechaFin.Text);

            MarketingBL oMarketingBL = new MarketingBL();
            int rpt=oMarketingBL.ActualizarCampaña(oCamp, contexto);
            if (rpt > 0)
            {
                lblMsj.Text = "Se guardo satisfactoriamente la campaña.";
                lblMsj.ForeColor = System.Drawing.Color.Blue;
                EditarControles(false);
                divControlesManten.Visible = true;
                divRegistrar.Visible = false;
                divMensaje.Visible = true;
            }
            else 
            {
                lblMsj.Text = "Se produjo un error al intentar guardar, cierre y vuelva a intentarlo.";
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;
            }
        }

        protected void imbCerrar_Click(object sender, ImageClickEventArgs e)
        {
            Response.Redirect("../wfPrincipal.aspx");
        }

        protected void imbCancelar_Click(object sender, ImageClickEventArgs e)
        {
            EditarControles(false);
            LimpiarCampos();
            divControlesManten.Visible = true;
            divRegistrar.Visible = false;
            divMensaje.Visible = false;
        }

        protected void imbModificar_Click(object sender, ImageClickEventArgs e)
        {
            if (String.IsNullOrEmpty(txtCodigoCamp.Text.Trim()))
            {
                lblMsj.Text = "Seleccione la campaña a modificar.";
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;                    
            }
            else
            {
                EditarControles(true);
                txtCodigoCamp.Enabled = false;
                divControlesManten.Visible = false;
                divRegistrar.Visible = true;
                divMensaje.Visible = false;
            }
        }
    }
}